home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 10
/
FM Towns Free Software Collection 10.iso
/
tos_updt
/
fmcity
/
palcom
/
auto
/
script
/
hpcom.mx
< prev
next >
Wrap
Text File
|
1995-02-10
|
6KB
|
247 lines
//--------------------------------------------------------------------------//
// PALCOM V2.1 L10 //
// 自動通信:HP文書送受信スクリプト //
// //
// CopyRight(C) 1994/10/20 //
// FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED //
// written by C-cube Soft T.Nakamura //
//--------------------------------------------------------------------------//
event @OPEN.EXTERN {
$AUTO.WAIT15 = AUTO.getWaitChar( 15 );
$AUTO.WAIT60 = AUTO.getWaitChar( 60 );
//--- HPの設定データを取り出す ---//
$dataList = AUTO.getHpData();
$HpList = list.getNth( $dataList, 1 );
$StList = list.getNth( $dataList, 2 );
$IdList = list.getNth( $dataList, 3 );
$PwList = list.getNth( $dataList, 4 );
$ChkList = list.getNth( $dataList, 5 );
$TagList = list.getNth( $dataList, 6 );
if( list.size( $HpList ) == 0 ) { // HP の登録無し
return;
}
//--- アップロード/ダウンロード指定情報の取得 ---//
$List = list.getNth( AUTO.getAutoData(), 4 );
if( list.getNth( $List, 1 ) == #TRUE ) {
$dwFlg = #TRUE;
} else {
$dwFlg = #FALSE;
}
if( list.getNth( $List, 2 ) == #TRUE ) {
$upFlg = #TRUE;
$idxList = AUTO.getUpList( 13 );
} else {
$upFlg = #FALSE;
$idxList = [];
}
$logId = AUTO.getLogFileId();
//--- HPに入る ---//
sys.stopIntRec();
loop {
AUTO.putStr("GO HP\r");
$errFlg = 1;
comtable( $a, 300 ) {
interval { AUTO.haltCheck(); }
"GO HP\n" { $errFlg = 0; exit; }
}
if( $errFlg == 0 ) {
exit;
}
AUTO.putStr("\r");
AUTO.waitPrompt( #TRUE );
continue;
}
$moreFlg = 0;
$inFlg = 0;
comtable( $a, 1200 ) {
"HP\n" { $inFlg = 1; }
">\w\w" { exit; }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
interval { AUTO.haltCheck(); }
timeout { exit; }
}
sys.startIntRec();
if( $inFlg == 0 ) {
$errMsg = ["HPのサービスへ入ることが出来ませんでした。",
"巡回を中止しました。"];
AUTO.error("HP巡回", $errMsg );
$$USER.DEFINED.9 = #FALSE;
return;
}
AUTO.sendCommand("SET PAGE OFF");
$i = 1;
$st = 0;
foreach( $a, $StList ) {
if( $a == #FALSE ) { // 巡回しない
$i = $i + 1;
continue;
}
//--- HPの番号を取得 ---//
$hpNo = list.getLast( list.getNth( $TagList, $i ));
//--- HPに入る ---//
sys.stopIntRec();
if( $st == 0 ) {
AUTO.putStr2("1\r");
comtable( $b, 0 ) {
interval { AUTO.haltCheck();}
">\w\w" { $flg = -1; exit; }
":\w\w" { $flg = 1; exit; }
}
if( $flg == -1 ) {
$errMsg = ["HPのサービスへ入ることが出来ませんでした。",
"巡回を中止しました。"];
AUTO.error("HP巡回", $errMsg );
$$USER.DEFINED.9 = #FALSE;
return;
}
} else {
AUTO.sendCommand("MOVE");
}
//--- ID 及びパスワードの送信 ---//
$cmd = str.join([list.getNth( $IdList, $i ), "\r"], "" );
$flg = -1;
AUTO.putStr2( $cmd );
comtable( $a, 1200 ) {
interval { AUTO.haltCheck();}
">\w\w" { $flg = -1; exit; }
"あなた" { $flg = 2; }
"◆該当する" { $flg = 2; }
"HP>\w\w" {
if( $flg == 2 ) {
$flg = -1;
} else {
$flg = 0;
}
exit;
}
":\w\w" {
if( $flg == 2 ) {
$flg = -2;
} else {
$flg = 1;
}
exit;
}
}
if( $flg < 0 ) {
$errMsg = ["HPへ入ることが出来ません。",
"開設者IDを確認してください。",
str.join(["HP名:", list.getNth( $HpList, $i )],"")];
AUTO.error("HP巡回", $errMsg );
$i = $i + 1;
if( $flg == -2 ) {
AUTO.sendCommand("2");
}
continue;
}
if( $flg == 1 ) {
loop {
$cmd = str.join([list.getNth( $PwList, $i ), "\r"], "" );
$flg = -1;
AUTO.putStr( $cmd );
comtable( $a, 1200 ) {
interval { AUTO.haltCheck();}
">\w\w" { $flg = -1; exit; }
":\w\w" { $flg = 1; exit; }
"HP>\w\w" { $flg = 0; exit; }
}
if( $flg != 1 ) {
exit;
}
}
}
if( $flg == -1 ) {
$errMsg = ["HPへ入ることが出来ません。",
"パスワードを確認してください。",
str.join(["HP名:", list.getNth( $HpList, $i )],"")];
AUTO.error("HP巡回", $errMsg );
$i = $i + 1;
continue;
}
//--- メッセージを書き込む ---//
if( $upFlg == #TRUE ) {
xfer.pauseText( $logId );
$j = 1;
foreach( $b, $idxList ) {
if( $hpNo != list.getNth(list.getNth(list.get1st($b),2),3 )) {
$j = $j + 1;
continue;
}
$$USER.DEFINED.9 = [$b, 2];
$path = str.join([$$DIR.STANDARD,
"AUTO\\SCRIPT\\SENDFILE.MX"], "" );
script.openExtern( $path, #FALSE, [] );
if( AUTO.getHaltFlg() != 0 ) {
return;
}
if( $$USER.DEFINED.9 == #TRUE ) {
AUTO.setSendFlg( $b );
}
$j = $j + 1;
}
xfer.resumeText( $logId );
}
//--- 新規の文書をダウンロード ---//
if( $dwFlg == #TRUE ) {
AUTO.putStr2("READ NEW\r");
$ptr = file.tell( $logId );
$ptr2 = $ptr;
$mode = 0;
comtable( $a, 0 ) {
interval { AUTO.haltCheck(); }
$AUTO.WAIT60 { AUTO.putStr("\r"); }
"\n" { // 行のカウント用
$ptr2 = file.tell( $logId );
}
"%3d [%2d/%2d/%2d %2d:%2d] %3c%5d" {
if( file.tell( $logId ) == $ptr2 + 31 ) {
if( $mode == 1 ) { // 見出しにマッチ
AUTO.writeIdx([
[0x501,[13,[1,3,$hpNo,$no,-1,-1,-1,-1,-1,-1]]],
[0x104,[$title]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
$ptr = $ptr2;
}
$mode = 1;
$line = 1;
$no = data.toNumber( str.left( $a, 3 ));
$title = str.join([str.right( $a, 8 ), str.replaceAll(
com.getString(0,#TRUE,#TRUE),"\n","")],"");
}
}
"HP>\w\w" { // プロンプト(終了)
if( $mode == 1 ) {
AUTO.writeIdx([
[0x501,[13,[1,3,$hpNo,$no,-1,-1,-1,-1,-1,-1]]],
[0x104,[$title]],
[0x303,[0x01,0x00,$ptr,$ptr2-$ptr,0,0,0]]] );
}
exit;
}
}
}
$i = $i + 1;
$st = 1;
}
sys.startIntRec();
return;
}
event @CLOSE.EXTERN {
sys.startIntRec();
return;
}
event @ERROR {
sys.startIntRec();
AUTO.fatalError();
event.mainLoop();
}